package com.mt.restaurant.service.sale;

import com.mt.common.core.web.base.PageDTO;
import com.mt.common.core.web.base.PageResultDTO;
import com.mt.restaurant.entity.sale.MenuSaleRecord;
import com.mt.restaurant.entity.sale.SaleOrderSettlement;

import java.util.List;

public interface SaleOrderSettlementService {
    /**
     * 根据分页参数查询销售订单结算集合
     *
     * @param pageDTO 分页条件
     */
    public PageResultDTO findSaleOrderSettlements(PageDTO pageDTO);

    /**
     * 查询全部销售订单结算集合
     *
     */
    public List<SaleOrderSettlement> findAllSaleOrderSettlements();

    /**
     * 根据名称查询销售订单结算集合(只提取ID 和 Name)
     *
     * @param saleOrderSettlementName 名称
     */
    public List<SaleOrderSettlement> findSaleOrderSettlementsWithIdNameByName(String saleOrderSettlementName);

    /**
     * 查询所有销售订单结算集合(只提取ID 和 Name)
     *
     */
    public List<SaleOrderSettlement> findAllSaleOrderSettlementsWithIdName();

    /**
     * 根据ID查询指定的销售订单结算(只提取ID 和 Name)
     *
     * @param saleOrderSettlementId Id
     */
    public SaleOrderSettlement findSaleOrderSettlementsWithIdNameById(Long saleOrderSettlementId);

    /**
     * 根据ID查询指定的销售订单结算
     *
     * @param saleOrderSettlementId Id
     */
    public SaleOrderSettlement findSaleOrderSettlement(Long saleOrderSettlementId);

    /**
     * 根据ID查询指定的销售订单结算(包含外键)
     *
     * @param saleOrderSettlementId Id
     */
    public SaleOrderSettlement findSaleOrderSettlementWithForeignName(Long saleOrderSettlementId);

    /**
     * 新增销售订单结算
     *
     * @param saleOrderSettlement 实体对象
     */
    public SaleOrderSettlement saveSaleOrderSettlement(SaleOrderSettlement saleOrderSettlement);

    /**
     * 更新销售订单结算
     *
     * @param saleOrderSettlement 实体对象
     */
    public SaleOrderSettlement updateSaleOrderSettlement(SaleOrderSettlement saleOrderSettlement);

    /**
     * 根据ID删除销售订单结算
     *
     * @param saleOrderSettlementId ID
     */
    public void deleteSaleOrderSettlement(Long saleOrderSettlementId);

    List<MenuSaleRecord> getMenuSaleRecordsByOrderId(Long orderId);
}
